package bpce.Entry;

import java.util.List;
import java.util.Map;

import bpce.modelo.EntradaLog;

import plugin.bpce.modelo.DiagramaPublicado;

import coppeer.cell.Cell;
import coppeer.cell.Entry;

public class SincronizacaoEntry implements Entry {

	private static final long serialVersionUID = 1900326562411718525L;
	private boolean propagate = true;
	private String nomeAgente;
	private List<String> listaAgentesConhecidos, listaModeladores, listaCopiaModeladores;
	private Cell cell;
	private Map<String, List<DiagramaPublicado>> listaDiagramas, listaCopiaDiagramas;
	private List<EntradaLog> listaLog;

	public Map<String, List<DiagramaPublicado>> getListaDiagramas() {
		return listaDiagramas;
	}

	public void setListaDiagramas(Map<String, List<DiagramaPublicado>> listaDiagramas) {
		this.listaDiagramas = listaDiagramas;
	}

	public List<String> getListaModeladores() {
		return listaModeladores;
	}

	public void setListaModeladores(List<String> listaModeladores) {
		this.listaModeladores = listaModeladores;
	}

	public Cell getCell() {
		return cell;
	}

	public void setCell(Cell cell) {
		this.cell = cell;
	}

	public boolean afterPropagation() {
		return false;
	}

	public boolean beforePropagation() {
		if (propagate){
			propagate = false;
			return true;
		} else 
			return false;
	}

	public Entry generatePropagation(Cell neighbor) {
		return this;
	}

	public long getPropagationLease(Cell neighbor) {
		return 10000;
	}

	public boolean matches(Entry template) {
		try{
			SincronizacaoEntry se = (SincronizacaoEntry) template;
			
			if (this.nomeAgente.equalsIgnoreCase(se.getNomeAgente()))
				return false;
			
			return true;
		}
		catch(Exception e){
			return false;
		}
	}

	public List<String> getListaAgentesConhecidos() {
		return listaAgentesConhecidos;
	}

	public void setListaAgentesConhecidos(List<String> listaAgentesConhecidos) {
		this.listaAgentesConhecidos = listaAgentesConhecidos;
	}

	public String getNomeAgente() {
		return nomeAgente;
	}

	public void setNomeAgente(String nomeAgente) {
		this.nomeAgente = nomeAgente;
	}

	public List<String> getListaCopiaModeladores() {
		return listaCopiaModeladores;
	}

	public void setListaCopiaModeladores(List<String> listaCopiaModeladores) {
		this.listaCopiaModeladores = listaCopiaModeladores;
	}

	public Map<String, List<DiagramaPublicado>> getListaCopiaDiagramas() {
		return listaCopiaDiagramas;
	}

	public void setListaCopiaDiagramas(
			Map<String, List<DiagramaPublicado>> listaCopiaDiagramas) {
		this.listaCopiaDiagramas = listaCopiaDiagramas;
	}

	public List<EntradaLog> getListaLog() {
		return listaLog;
	}

	public void setListaLog(List<EntradaLog> listaLog) {
		this.listaLog = listaLog;
	}

}
